package org.zero.mapper;

import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.zero.domain.UserDO;

/**
 * @author Zero
 */
public interface UserMapper {
    /**
     * script 标签可以让动态SQL在注解中使用
     *
     * @param id
     * @return
     */
    @Select({"<script>",
            "select * from user",
            "   <where>",
            "       <if test='id>0'>",
            "           id = #{id}",
            "       </if>",
            "   </where>",
            "</script>"})
    UserDO findById(int id);

    /**
     * id批量查询
     *
     * @param ids
     * @return
     */
    List<UserDO> findByIds(@Param("ids") int... ids);

    /**
     * 名字模糊查询实现1
     *
     * @param name
     * @return
     */
    List<UserDO> findByName1(String name);

    /**
     * 名字模糊查询实现2
     *
     * @param name
     * @return
     */
    List<UserDO> findByName2(String name);

    /**
     * 多条件选择一个查询
     *
     * @param user
     * @return
     */
    UserDO findByCondition(UserDO user);

    /**
     * 修改
     *
     * @param user
     * @return
     */
    int update(UserDO user);

    /**
     * 增加
     *
     * @param user
     * @return
     */
    int save(UserDO user);
}
